考点:无字母数字 getshell
打开
开门见山,直接给出源代码。
1 |
|
看到这道题,我就想到p神。首先,这道题是出再php7环境下,php7和php5 有不一样的解法。
两个条件
传入值得长度不能大于40位
1 | if(strlen($code)>40) |
传入的值 不能存在 字母 数字
1 | preg_match("/[A-Za-z0-9]+/",$code)) |
php7前是不允许用($a)();
这种方法来执行动态函数。php7支持了该方式。
1 | $c = 'phpinfo'; |
去请求
1 | GET: |
能够成功执行。这里可以查看disable_functions
禁用了哪些函数。
常用的 system
exec
shell_exec
都被禁用。
用 assert
来 执行 eval($_POST[cmd])
1 | $str1 = 'assert'; |
1 | GET: |
回显
蚁剑连接
可以在根目录下看到flag 文件,但是不能打开,需要用到蚁剑的插件。
因为许多函数被禁用,终端不能执行命令,用这个插件可以在终端中成功执行命令。